package com.cskaoyan.javase.oop2._1extend._9final._2method;

/**
 * @description: final修饰方法
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * final修饰成员方法表示最终的,最后的方法,意味着该方法无法被重写(不是无法继承)
 * 语法:
 *      [访问权限修饰符] final 返回值类型 方法名(形参){
 *          //方法体
 *      }
 *
 * 注意事项:
 *      1,无法重写,但是可以继承
 *      2,什么样的方法需要设置为final?
 *          ---> 什么样的方法不需要重写?
 *          a,这个方法足够完善了,不需要子类再补充了,子类只需要使用就可以了
 *          b,就算方法不完善,但是我作为父类的设计者认为该方法作为一个规范提供给你,如果你不满意可以自己写
 *     3,正常情况下,没有特殊需求,还是不要把方法设置为final
 *
 */
public class Demo {
    public static void main(String[] args) {
        Son s = new Son();
        s.test();
    }
}
class Father{
   final void test(){
        System.out.println("father");
    }

    final void eat(){
        System.out.println("吃饭");
    }
}
class Son extends Father{
    //@Override
    //'test()' cannot override 'test()' in 'Father'; overridden method is final
    //void test() {
    //    System.out.println("son");
    //}
}